package Model;

import java.util.Vector;



public abstract class Plan {
	private int nroPlan;
	private Vector<Servicio> servicios;
	private String descripcion;

	
	public Plan(int nro,String descripcion){
		this.descripcion = descripcion;
		this.nroPlan = nro;

	}
	
	public int getNroPlan() {
		return nroPlan;
	}
	
	public Vector<Servicio> getServicios(){
		return servicios;
	}
	
	public void setNroPlan(int nroPlan) {
		this.nroPlan = nroPlan;
	}
	
	public Servicio getServicio(String descripcion) {
		boolean encontrado = false;
		Servicio servicio = null;
		int i = 0;
		while(!encontrado && i < servicios.size()){
			servicio = servicios.get(i);
			if(descripcion.equalsIgnoreCase(servicio.getDescripcion())){
				encontrado = true;
			}else if(servicio.esPaquete()){
				int k = 0;
				Vector<Servicio> serviciosPaquete = ((Paquete) servicio).getServicios();
				while(!encontrado && k < serviciosPaquete.size()){
					servicio = serviciosPaquete.get(k);
					if(descripcion.equalsIgnoreCase(servicio.getDescripcion())){
						encontrado = true;
					}
				}
			}
			i++;
		}
		
		return servicio;
	}
	public String getPlanType(){
		return this.getClass().getName();
	}
	
	public void setServicios(Vector<Servicio> servicios) {
		this.servicios = servicios;
	}
	
	public String getDescripcion(){
		return descripcion;
	}
	
	public void setDescripcion(String descripcionNueva){
		this.descripcion=descripcionNueva;
	}
	
	public Vector<ServicioView> getServiciosView(){
		Vector<ServicioView> serviciosView = new Vector<ServicioView>();
		for(Servicio servicio : servicios){
			if(!servicio.esPaquete()){
				serviciosView.add(servicio.getView());
			}else{
				PaqueteView paqueteView = (PaqueteView)servicio.getView();
				for(ServicioView servicioPaquete : paqueteView.getServiciosView()){
					serviciosView.add(servicioPaquete);
				}
				
			}
		}
		return serviciosView;
	}
	
	public PlanView getView() {
		return new PlanView(nroPlan,descripcion, this.getServiciosView());
	}
	
	public void setCostoAdicionalDatos(float costoAdicionalDatos){
		
	}
	
	public void setCantidadDatos(int cantidadDatos){

	}

	public void setCostoAdicionalMinutosLibres(float precioMinutoAdicional) {
		// TODO Auto-generated method stub
		
	}

	public void setCostoAdicionalSMS(float precioSmsAdicional) {
		// TODO Auto-generated method stub
		
	}

	public void setCantidadMinutosLibres(int minutosLibres) {
		// TODO Auto-generated method stub
		
	}

	public void setCantidadSMS(int smsDisponibles) {
		// TODO Auto-generated method stub
		
	}

}
